06 存储器层次结构

存储器层次结构

本章的核心是:

  1. 一些常见的存储技术
  2. 存储器的层次结构
  3. 高速缓存的工作原理
  4. 结合高速缓存,提高程序的局部性

存储技术

有哪些与时俱进的存储技术?

  1. SRAM:六晶体管电路,只要有电,就永远保持它的值。受干扰影响小。
  2. DRAM:电容,易受干扰。

    SRAM和DRAM对比

  3. 传统的DRAM

    传统的DRAM

    每个超单元都有w个DRAM单元

    传统的DRAM

  4. 内存模块

    传统的DRAM

  5. 增强的DRAM:对传统的DRAM进行优化,提高访问速度

  6. 非易失性存储器(历史原因,也叫ROM):断电依然保存信息
    • PROM(可编程ROM):高电流熔断,只可编程一次
    • EPROM(可擦可编程ROM):紫外光编程,可编程1000次
    • EEPROM(电子可擦除ROM):无需要独立的特殊设备,可编程100000次
    • 闪存:基于EEPROM

ROM有什么用?

存放在ROM中的程序被称为固件,比如PC的BIOS程序
当计算机通电以后,它会运行ROM中的固件

如何访问主存?

通过总线

总线结构

I/O桥把系统总线的电子信号翻译成内存总线的电子信号

读内存

磁盘的构造?磁盘的容量?

使用磁性记录材料来记录信息

磁盘构造

磁盘容量

如何操作磁盘?如何连接磁盘?如何访问磁盘?

操作磁盘

为了对操作系统隐藏这样的复杂性,根据扇区定义逻辑块
磁盘控制器维护逻辑块号和实际磁盘扇区之间的映射关系

通过I/O总线连接磁盘:

连接磁盘

访问磁盘

什么是直接内存访问(DMA)

设备自己执行读和写总线事务,不需要CPU干涉,称为直接内存访问

固态硬盘的结构?

固态硬盘

存储技术的趋势?

存储技术的趋势

现代计算机频繁使用高速缓存来弥补处理器-内存之间的差距
程序的局部性能使高速缓存的作用发挥到极致

局部性

什么是局部性?

  • 时间局部性:被引用过一次的内存地址,在不久之后多次被引用
  • 空间局部性:被引用过一次的内存地址,在不久之后其附近的位置多次被引用

如何简单的运用局部性?

  • 重复引用相同的变量具有良好的时间局部性
  • 迭代数组的步长越小,空间局部性越好
  • 循环体具有良好的时间和空间局部性

存储器层次结构

存储器层次结构

缓存的基本原理?

存储器层次结构

层与层之间以相同大小的数据块进行传输
不同层之间的块的大小是不一样的

缓存的命中和不命中?

找到了就是命中,没找到就是不命中
不命中的情况下需要决定替换块的替换策略

不命中的类型?

  • 冷缓存:初始状态,什么缓存都没
  • 冲突不命中:请求的缓存交替的发生在相同位置的块上
  • 容量不命中:缓存太小了

缓存的管理?

块的划分、块的传送、命中判定、替换策略等等

缓存

逐步从直接访问变为间接访问

高速缓存存储器

高速缓存存储器

如何缓存(如何映射)?

缓存的位置都是根据地址计算得到

缓存的通用原理

高速缓存的结构可以用元祖(S,E,B,m)描述

缓存类别有?

  1. 直接映射高速缓存

    每组只有一行,替换策略简单,冲突不命中易发生

    直接映射高速缓存

  2. 组相联高速缓存

    每组有多行,最简单的替换策略是随机替换

    组相联高速缓存

  3. 全组高速缓存

全组高速缓存

命中如何更新缓存?

  1. 直写:立即向低层更新数据
  2. 写回:等待缓存被替换时才 向低层更新数据

不命中如何更新缓存?

  1. 写分配:先加载到高速缓存中
  2. 非写分配:直接更新,避开高速缓存

真实的缓存层次结构?

真实的缓存层次结构?

如何衡量缓存性能?

  1. 不命中率:不命中数量/引用数量
  2. 命中率:
  3. 命中时间:命中需要的时间
  4. 不命中处罚:不命中需要的额外时间

编写高速缓存友好的代码

确保代码高速缓存友好的方式是?

  1. 把时间花在核心函数中
  2. 尽量减少每个循环内部的缓存不命中率

空间局部性和缓存大小有直接关系

存储器山如何分析?

维基百科:存储器山

本文标题:06 存储器层次结构

文章作者:Sun

发布时间:2019年05月16日 - 18:05

最后更新:2019年06月12日 - 14:06

原始链接:https://sunyi720.github.io/2019/05/16/系统原理/06 存储器层次结构/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。